import argparse

def main():
    # 创建主解析器（禁用默认帮助选项）
    parser = argparse.ArgumentParser(
        prog="myprogram",
        description="支持子命令的命令行程序",
        add_help=False  # 禁用默认的 -h/--help 选项
    )

    # 添加全局选项
    parser.add_argument(
        "-h", "--help", 
        action="store_true", 
        help="显示帮助信息"
    )
    parser.add_argument(
        "--config", 
        help="指定配置文件路径", 
        metavar="FILE"
    )

    # 创建子命令解析器
    subparsers = parser.add_subparsers(
        title="可用子命令",
        dest="command",
        required=False  # 不强制要求子命令
    )

    # 子命令1: greet
    parser_greet = subparsers.add_parser("greet", add_help=False)
    parser_greet.add_argument("name", help="名字")
    parser_greet.add_argument("-l", "--loud", action="store_true", help="大声打招呼")

    # 子命令2: calculate
    parser_calculate = subparsers.add_parser("calculate", add_help=False)
    parser_calculate.add_argument("operation", choices=["add", "subtract", "multiply"])
    parser_calculate.add_argument("numbers", type=float, nargs="+")

    # 解析参数
    args, remaining_args = parser.parse_known_args()

    # 处理帮助选项
    if args.help:
        if args.command:
            # 显示特定子命令的帮助
            if args.command == "greet":
                parser_greet.print_help()
            elif args.command == "calculate":
                parser_calculate.print_help()
        else:
            # 显示主帮助
            parser.print_help()
        return

    # 处理子命令逻辑
    if args.command == "greet":
        message = f"Hello, {args.name}!"
        if args.loud:
            message = message.upper()
        print(message)

    elif args.command == "calculate":
        result = args.numbers[0]
        if args.operation == "add":
            for num in args.numbers[1:]:
                result += num
            print(f"加法结果: {result}")
        elif args.operation == "subtract":
            for num in args.numbers[1:]:
                result -= num
            print(f"减法结果: {result}")
        elif args.operation == "multiply":
            for num in args.numbers[1:]:
                result *= num
            print(f"乘法结果: {result}")

    # 无子命令时的默认行为
    else:
        print("欢迎使用 myprogram！请指定子命令或选项。")
        print("使用 -h/--help 查看帮助信息。")

if __name__ == "__main__":
    main()